package dao

import (
	"common/logs"
	"context"
	"core/models/entity"
	"core/repo"
)

type AccountDao struct {
	repo *repo.Manager
}

func NewAccountDao(m *repo.Manager) *AccountDao {
	return &AccountDao{
		repo: m,
	}
}

func (d AccountDao) SaveAccount(ctx context.Context, ac *entity.Account) error {

	// 选一个表，如果不存在会创建，然后往表里插入一条数据
	table := d.repo.Mongo.Db.Collection("account")
	_, err := table.InsertOne(ctx, ac)
	if err != nil {
		return err
	}
	return nil
}

func (d AccountDao) SaveLoginLog(ctx context.Context, ac *entity.LoginLog) error {
	tb := ac.TableName()
	if len(tb) == 0 {
		logs.Error("TableName undefined ，entity.LoginLog")
	}
	table := d.repo.Mongo.Db.Collection(tb)
	_, err := table.InsertOne(ctx, ac)
	if err != nil {
		return err
	}
	return nil
}

// 往mysql中插入一条数据
func (d AccountDao) AddUserAttr(ctx context.Context, click *entity.UserCLickAttr) bool {
	err := d.repo.Mysql.GOrm.Save(click).Error
	if err != nil {
		logs.Error("数据表UserCLickAttr插入失败:  %s", err.Error())
		return false
	}
	return true
}

// 往mangodb中插入一条数据
func (d AccountDao) AddClickLog(ctx context.Context, param *entity.ClickLog) error {
	tb := param.TableName()
	if len(tb) == 0 {
		logs.Error("TableName undefined ，entity.ClickLog")
	}
	table := d.repo.Mongo.Db.Collection(tb)
	_, err := table.InsertOne(ctx, param)
	if err != nil {
		return err
	}
	return nil
}
